﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.IO;
using System.Net.Mime;
using System.ComponentModel;

namespace BYFW.SFL
{
    /// <summary>
    /// 邮件发送程序
    /// </summary>
    public class MailOP
    {

        /// <summary>
        /// 异步发送邮件时启用的邮件发送完成通知
        /// </summary>
        public static event SendCompletedEventHandler OnSendCompleted;

        private string m_server = "";
        private string m_userName = "";
        private string m_pwd = "";
        private string m_fromMail = "";
        private string m_toMail = "";
        private string m_ccMail = "";
        private string m_bccMail = "";
        private string m_subject = "";
        private string m_body = "";
        private bool m_htmlBody = false;
        private string m_attachFileName = "";
        private int? m_port = null;
        private bool? m_ssl = null;
        private bool? m_needBack = null;
        private bool? m_noticeFail = null;
        private bool? m_async = null;
        private object m_asyncID = null;
        private List<Attachment> m_attachmentList = new List<Attachment>();
        private object m_tag = null;



        /// <summary>
        /// 邮件服务器
        /// </summary>
        public string Server
        {
            get { return m_server; }
            set { m_server = value; }
        }
        /// <summary>
        /// 登录到邮件服务器的用户名
        /// </summary>
        public string UserName
        {
            get { return m_userName; }
            set { m_userName = value; }
        }
        /// <summary>
        /// 登录到邮件服务器的密码
        /// </summary>
        public string Pwd
        {
            get { return m_pwd; }
            set { m_pwd = value; }
        }
        /// <summary>
        /// 显示发送人的邮件地址
        /// </summary>
        public string FromMail
        {
            get { return m_fromMail; }
            set { m_fromMail = value; }
        }
        /// <summary>
        /// 目标地址
        /// </summary>
        public string ToMail
        {
            get { return m_toMail; }
            set { m_toMail = value; }
        }
        /// <summary>
        /// 抄送地址
        /// </summary>
        public string CcMail
        {
            get { return m_ccMail; }
            set { m_ccMail = value; }
        }
        /// <summary>
        /// 密件抄送地址：不显示给其他收件人的抄送列表里
        /// </summary>
        public string BccMail
        {
            get { return m_bccMail; }
            set { m_bccMail = value; }
        }
        /// <summary>
        /// 邮件主题
        /// </summary>
        public string Subject
        {
            get { return m_subject; }
            set { m_subject = value; }
        }
        /// <summary>
        /// 邮件内容
        /// </summary>
        public string Body
        {
            get { return m_body; }
            set { m_body = value; }
        }
        /// <summary>
        /// 是否按照html格式显示
        /// </summary>
        public bool HtmlBody
        {
            get { return m_htmlBody; }
            set { m_htmlBody = value; }
        }
        /// <summary>
        /// 邮件附件的文件名：本地的全名
        /// </summary>
        public string AttachFileName
        {
            get { return m_attachFileName; }
            set { m_attachFileName = value; }
        }
        /// <summary>
        /// 邮件服务器使用的端口
        /// </summary>
        public int? Port
        {
            get { return m_port; }
            set { m_port = value; }
        }
        /// <summary>
        /// 邮件服务器是否需要ssl加密
        /// </summary>
        public bool? Ssl
        {
            get { return m_ssl; }
            set { m_ssl = value; }
        }
        /// <summary>
        /// 需要回条
        /// </summary>
        public bool? NeedBack
        {
            get { return m_needBack; }
            set { m_needBack = value; }
        }
        /// <summary>
        /// 发送失败提醒
        /// </summary>
        public bool? NoticeFail
        {
            get { return m_noticeFail; }
            set { m_noticeFail = value; }
        }
        /// <summary>
        /// 是否异步发送
        /// </summary>
        public bool? Async
        {
            get { return m_async; }
            set { m_async = value; }
        }
        /// <summary>
        /// 异步发送时使用的标识
        /// </summary>
        public object AsyncID
        {
            get { return m_asyncID; }
            set { m_asyncID = value; }
        }
        /// <summary>
        /// 指定特征的附件
        /// </summary>
        public List<Attachment> AttachmentList
        {
            get { return m_attachmentList; }
        }

        /// <summary>
        /// 本类相关的信息
        /// </summary>
        public object Tag
        {
            get { return m_tag; }
            set { m_tag = value; }
        }

        /// <summary>
        /// 添加嵌入的图片资源
        /// </summary>
        /// <param name="fileName">资源的文件全名</param>
        /// <returns>该资源的标识</returns>
        public string AddNewImage(string fileName)
        {
            string res = Guid.NewGuid().ToString().Substring(0, 8);
            Attachment att = new Attachment(fileName);
            att.ContentId = res;
            m_attachmentList.Add(att);
            return "cid:" + res;
        }

        /// <summary>
        /// 添加收件人
        /// </summary>
        /// <param name="msg">邮件消息对象</param>
        /// <param name="to">收件人地址，多个收件人使用";"分割</param>
        protected static void AddTO(MailMessage msg, string to)
        {
            string[] tos = to.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < tos.Length; i++)
            {
                MailAddress tmp = new MailAddress(tos[i]);
                msg.To.Add(tmp);
            }
        }
        /// <summary>
        /// 添加附件
        /// </summary>
        /// <param name="msg">邮件消息对象</param>
        /// <param name="attFile">附件的文件名，多个附件使用";"分割</param>
        /// <param name="attachList">已附件对象形式存在的附件列表</param>
        protected static void AddAttach(MailMessage msg, string attFile, List<Attachment> attachList)
        {
            if (!string.IsNullOrEmpty(attFile))
            {
                string[] atts = attFile.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < atts.Length; i++)
                {
                    Attachment tmp = new Attachment(atts[i], MediaTypeNames.Application.Octet);
                    //附件信息
                    ContentDisposition disposition = tmp.ContentDisposition;
                    disposition.CreationDate = File.GetCreationTime(atts[i]);
                    disposition.ModificationDate = File.GetLastWriteTime(atts[i]);
                    disposition.ReadDate = File.GetLastAccessTime(atts[i]);
                    msg.Attachments.Add(tmp);
                }
            }
            if (attachList != null)
            {
                for (int i = 0; i < attachList.Count; i++)
                {
                    msg.Attachments.Add(attachList[i]);
                }
            }
        }
        /// <summary>
        /// 添加抄送
        /// </summary>
        /// <param name="msg">邮件消息对象</param>
        /// <param name="cc">抄送人，多个抄送人使用";"分割</param>
        protected static void AddCC(MailMessage msg, string cc)
        {
            if (string.IsNullOrEmpty(cc))
            {
                return;
            }
            string[] ccs = cc.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < ccs.Length; i++)
            {
                MailAddress tmp = new MailAddress(ccs[i]);
                msg.CC.Add(tmp);
            }
        }
        /// <summary>
        /// 添加匿名抄送
        /// </summary>
        /// <param name="msg">邮件消息对象</param>
        /// <param name="bcc">匿名抄送人，多个匿名抄送人使用";"分割</param>
        protected static void AddBCC(MailMessage msg, string bcc)
        {
            if (string.IsNullOrEmpty(bcc))
            {
                return;
            }
            string[] ccs = bcc.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < ccs.Length; i++)
            {
                MailAddress tmp = new MailAddress(ccs[i]);
                msg.Bcc.Add(tmp);
            }
        }
        /// <summary>
        /// 登录SMTP服务器并发送邮件
        /// </summary>
        /// <param name="msg">邮件消息对象</param>
        /// <param name="server">SMTP服务器地址</param>
        /// <param name="userName">登录SMTP服务器的用户名</param>
        /// <param name="pwd">登录SMTP服务器的密码</param>
        /// <param name="port">SMTP服务器的端口号，可为null</param>
        /// <param name="ssl">SMTP服务器是否使用SSL安全传输，可为null</param>
        /// <param name="async">是否异步发送，可为null</param>
        /// <param name="asyncID">异步发送时的标识</param>
        protected static void Send(MailMessage msg, string server, string userName, string pwd, int? port, bool? ssl, bool? async, object asyncID)
        {
            SmtpClient client = new SmtpClient(server);
            if (!(userName == null || pwd == null || userName == ""))
            {
                client.Credentials = new NetworkCredential(userName, pwd);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                if (port != null)
                {
                    client.Port = (int)port;
                }
                if (ssl != null)
                {
                    client.EnableSsl = (bool)ssl;
                }
            }
            if (async != null && (bool)async)
            {
                client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
                client.SendAsync(msg, asyncID);
            }
            else
            {
                client.Send(msg);
            }
        }

        private static void client_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (OnSendCompleted != null)
            {
                OnSendCompleted(sender, e);
            }
        }

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="server">SMTP服务器地址</param>
        /// <param name="userName">登录SMTP服务器的用户名</param>
        /// <param name="pwd">登录SMTP服务器的密码</param>
        /// <param name="fromMail">显示发件的Email</param>
        /// <param name="toMail">收件人地址，多个收件人使用";"分割</param>
        /// <param name="ccMail">抄送人，多个抄送人使用";"分割</param>
        /// <param name="bccMail">匿名抄送人，多个匿名抄送人使用";"分割</param>
        /// <param name="subject">邮件主题</param>
        /// <param name="body">邮件正文</param>
        /// <param name="htmlBody">是否显示HTML格式</param>
        /// <param name="attachFileName">附件的文件名，多个附件使用";"分割</param>
        /// <param name="attachList">已附件对象形式存在的附件列表</param>
        /// <param name="port">SMTP服务器的端口号，可为null</param>
        /// <param name="ssl">SMTP服务器是否使用SSL安全传输，可为null</param>
        /// <param name="async">是否异步发送，可为null</param>
        /// <param name="asyncID">异步发送时的标识</param>
        /// <param name="needBack">是否需要回执功能，可为null</param>
        /// <param name="noticeFail">是否接受发送失败通知，可为null</param>
        public static void SendMail(string server, string userName, string pwd, string fromMail, string toMail,
            string ccMail, string bccMail, string subject, string body, bool htmlBody, string attachFileName, List<Attachment> attachList,
            int? port, bool? ssl, bool? async, object asyncID, bool? needBack, bool? noticeFail)
        {
            MailMessage msg = new MailMessage();
            if (!string.IsNullOrEmpty(fromMail))
            {
                msg.From = new MailAddress(fromMail);
            }
            msg.Subject = subject;
            msg.Body = body;
            msg.IsBodyHtml = htmlBody;
            if (needBack != null && (bool)needBack)
            {
                msg.Headers.Add("Disposition-Notification-To", fromMail);
                msg.Headers.Add("ReturnReceipt", "1");
            }
            if (noticeFail != null && (bool)noticeFail)
            {
                msg.DeliveryNotificationOptions = msg.DeliveryNotificationOptions | DeliveryNotificationOptions.OnFailure;
            }
            AddTO(msg, toMail);
            AddCC(msg, ccMail);
            AddBCC(msg, bccMail);
            AddAttach(msg, attachFileName, attachList);
            Send(msg, server, userName, pwd, port, ssl, async, asyncID);
        }
        /// <summary>
        /// 发送邮件
        /// </summary>
        public void SendMail()
        {
            SendMail(m_server, m_userName, m_pwd, m_fromMail, m_toMail,
                m_ccMail, m_bccMail, m_subject, m_body, m_htmlBody, m_attachFileName, m_attachmentList,
                m_port, m_ssl, m_async, m_asyncID, m_needBack, m_noticeFail);
        }

        protected void Test()
        {
            MailOP mop = new MailOP();
            string id = mop.AddNewImage(@"e:\clr.jpg");
            mop.m_userName = "baoyang@seiosoft.com";
            mop.m_pwd = "baoyang";
            mop.m_toMail = "testbao@gmail.com";
            mop.m_server = "smtp.seiosoft.com";
            mop.m_port = 25;
            mop.m_ssl = false;
            //mop.Async = true;
            mop.m_htmlBody = true;
            mop.m_subject = "Test Email image";
            mop.m_fromMail = "baoyang@seiosoft.com";
            mop.m_body = string.Format("<span style='color:blue'>TEST Embed IMAGE</span><IMG src='{0}'/>", id);
            mop.SendMail();
            return;
            //SendMail("smtp.gmail.com", "testbao@gmail.com", "anhuichaohu", "hubo1516@gmail.com ",
                //"aaron.bao@seioglobal123.com", null, null, "test12345", "just a test", true, "", null, 587, true, true, null, true, true);
        }

        protected void TestSendResume()
        {
            MailOP mop = new MailOP();
            mop.NeedBack = true;
            mop.m_userName = "testbao@gmail.com";
            mop.m_pwd = "anhuichaohu";
            mop.m_toMail = "testbao@gmail.com";
            mop.m_server = "smtp.gmail.com";
            mop.m_port = 587;
            mop.m_ssl = true;
            //mop.Async = true;
            mop.m_htmlBody = true;
            mop.m_subject = "<包洋>应聘项目经理，谢谢！";
            mop.m_fromMail = "testbao@gmail.com";
            mop.m_body = @"
<body>
&nbsp;&nbsp;您好！<p/>
附件是我的简历，谢谢您的关注！<p />
<table border='1' bordercolor='#808000' width='800' style='border-collapse:collapse; font-size:14px;line-height:20px;padding-left:10px;'>
<tr>
<td colspan='4' style='text-align:center;width:100%;font-weight:bold;background-color:#ededed'>
简    历
</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;width:25%'>姓   名</td><td style='padding-left:10px;width:25%'>包洋</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;width:25%'>性   别</td><td style='padding-left:10px;'>男</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>出 生 年 月</td><td style='padding-left:10px;'>1978年6月12日</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>工 作 年 限</td><td style='padding-left:10px;'>6年</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>手   机</td><td style='padding-left:10px;'>13564064642</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>Email</td><td style='padding-left:10px;'>testbao@gmail.com</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>求 职 意 向</td><td colspan='3'  style='padding-left:10px;'>项目经理 / 主管</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;font-weight:bolder;background-color:#888888'>【自 我 评 价】</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;'>8年工作经验，2年项目管理经验，众多项目开发经验；<br />
扎实的技术研发实力，精通C#、ASP.NET、Web Service、AJAX、JavaScript、SQL Server、MySql等技术；<br />
优秀的语言应用能力，英语读写、交流熟练，表达和沟通能力强；<br />
出色的项目管理能力，先后带领团队完成数个项目的开发；<br />
熟练的需求分析能力，引导客户并完善需求分析，为客户提供最优化的解决方案。
</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;font-weight:bolder;background-color:#888888'>【教 育 经 历】</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;text-align:center;'>时    间</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>毕业院校</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>专    业</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>资格/证书</td>
</tr>
<tr>
<td style='text-align:center;'>2003年9月 — 2006年3月</td><td style='text-align:center;'>东华大学</td><td style='text-align:center;'>机械制造及自动化</td><td style='text-align:center;'>硕士</td>
</tr>
<tr>
<td style='text-align:center;'>1996年9月 — 2000年7月</td><td style='text-align:center;'>合肥工业大学</td><td style='text-align:center;'>机械制造及自动化</td><td style='text-align:center;'>学士</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;font-weight:bolder;background-color:#888888'>【语 言 能 力】</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;text-align:center;'>语    言</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>读写能力</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>听说能力</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>获得证书</td>
</tr>
<tr>
<td style='text-align:center;'>英语</td><td style='text-align:center;'>熟练</td><td style='text-align:center;'>良好</td><td style='text-align:center;'>CET-4</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;font-weight:bolder;background-color:#888888'>【IT 技 能】</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;text-align:center;'>技术名称</td><td style='font-weight:bold;background-color:#ededed;text-align:center;'>熟练程度</td><td style='font-weight:bold;background-color:#ededed;text-align:center;' colspan='2'>使用时间（月）</td>
</tr>
<tr>
<td style='text-align:center;'>C#</td><td style='text-align:center;'>精通</td><td style='text-align:center;' colspan='2'>70</td>
</tr>
<tr>
<td style='text-align:center;'>ASP.NET</td><td style='text-align:center;'>精通</td><td style='text-align:center;' colspan='2'>70</td>
</tr>
<tr>
<td style='text-align:center;'>VB.NET</td><td style='text-align:center;'>了解</td><td style='text-align:center;' colspan='2'>12</td>
</tr>
<tr>
<td style='text-align:center;'>Javascript</td><td style='text-align:center;'>精通</td><td style='text-align:center;' colspan='2'>70</td>
</tr>
<tr>
<td style='text-align:center;'>JQuery</td><td style='text-align:center;'>熟悉</td><td style='text-align:center;' colspan='2'>24</td>
</tr>
<tr>
<td style='text-align:center;'>PHP</td><td style='text-align:center;'>了解</td><td style='text-align:center;' colspan='2'>4</td>
</tr>
<tr>
<td style='text-align:center;'>SQL Server</td><td style='text-align:center;'>精通</td><td style='text-align:center;' colspan='2'>70</td>
</tr>
<tr>
<td style='text-align:center;'>MySql</td><td style='text-align:center;'>精通</td><td style='text-align:center;' colspan='2'>50</td>
</tr>
<tr>
<td style='text-align:center;'>Oracle</td><td style='text-align:center;'>熟练</td><td style='text-align:center;' colspan='2'>21</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;font-weight:bolder;background-color:#888888'>【工 作 经 历】（由远及近）</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2008年8月 — 至今</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>上海晟欧软件技术有限公司（规模:500-999人）</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>所在部门 / 职位</td><td style='padding-left:10px;' colspan='3'>事业四部 / 项目主管</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>工作职责</td><td style='padding-left:10px;' colspan='3'>1.	分析客户需求，对项目的规模，风险和工作量进行评估，定期和不定期的视频会议，直接面对面与客户进行需求的确认和探讨；<br />
2.	制定项目计划和各个里程碑，确定问题的优先级，评估项目资源需求并有效地分配项目资源，跟踪项目进度，总体和详细设计，针对不同项目建立Checklist，代码Review，提高代码的质量；<br />
3.	协助市场部及BD部门制定提案书Proposal框架；<br />
4.	规划、组织和安排项目技术文档的管理工作；<br />
5.	解决项目开发中遇到的各种技术难点和架构；<br />
6.	完成OXPG虚拟交易平台和OA系统（可参见http://www.oxpg.com），杭州新中大i6中EPM（企业绩效管理）子系统，日本世存HULFT的升级开发，以及ShopEX（电子商务平台）若干客户化二次开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2006年4月 — 2008年7月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>上海瑞骏实业有限公司（规模:100-499人）</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>所在部门 / 职位</td><td style='padding-left:10px;' colspan='3'>软件开发部 / 高级程序员</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>工作职责</td><td style='padding-left:10px;' colspan='3'>1.	分析需求并进行详细设计；<br />
2.	协助项目经理制定开发计划；<br />
3.	完成虚拟工厂系统3.0（vFactorySystem）的设计和开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2000年7月 — 2002年7月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>苏州华硕电脑有限公司（规模:1000-9999人）</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>所在部门 / 职位</td><td style='padding-left:10px;' colspan='3'>制前课 / 制前设计组长</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>工作职责</td><td style='padding-left:10px;' colspan='3'>PCB制前设计。</td>
</tr>
<tr>
<td colspan='4' style='padding-left:10px;font-weight:bolder;background-color:#888888'>【项 目 经 验】（由远及近）</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2010年4月 — 至今</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>电子商务平台ShopEX客户化二次开发</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Linux，Apache</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>PHP，MySql</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>担任该项目的项目主管，团队规模6人，主要负责：<br />
1.	需求分析，确定二次开发的项目范围和方案；<br />
2.	制定项目计划，分配项目资源，控制项目进度；<br />
3.	组织测试和在线联调。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>ShopEX是国内应用最广泛的网店系统，采用PHP+MySql开发，使用Smarty模板引擎。针对不同的客户进行客户化定制的主要内容包括：添加线下销售模块管理线下会员、线下销售和积分；与客户现有的ERP系统实现订单，商品，会员等的双向或单向同步。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2009年12月 — 2010年4月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>跨平台数据传输系统HULFT V7改善和新功能开发</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>担任该项目的项目主管，团队规模10人，主要负责：<br />
1.	制定项目计划，分配项目资源，控制项目进度；<br />
2.	定期的视频会议，直接面对面与客户进行需求的确认和探讨；<br />
3.	PG阶段难点的调查，技术攻关和提案；<br />
4.	IT阶段，承担所有新问题的调查和解决，确保项目如期完成。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>该项目为日本世存公司的主打产品跨平台数据传输工具HULFT  Manager V7进行改善，HULFT是用于企业内部数据连接以及企业间系统连接的软件，应用于大型机、中规模计算机、UNIX、Linux、Windows等不同平台间的数据转换传输。<br />
本次改善主要针对该产品中现存的若干疑难bug进行修复，以及文件监视策略等新功能的开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2009年4月 — 2009年12月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>新中大企业绩效管理系统（EPM）升级开发</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows, IIS</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, ASP.NET, WinForm, Web Service, SQL Server, Oracle</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>担任该项目的项目主管，团队规模6人，主要职责如下：<br />
1.	深入分析需求，确定设计方案；<br />
2.	对开发工作量进行细致的评估；<br />
3.	制定开发和测试计划，并对人员进行合理的安排；<br />
4.	保持与客户良好的沟通。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>该项目是对杭州新中大软件股份有限公司的URP产品i6中EPM（企业绩效管理）子系统的升级和新功能开发，企业绩效管理系统是通过一个构建于企业内部的各种企业管理软件、业务流程和业务成功的指标之上的系统；<br />
升级的主要内容：将整个EPM按照新的多线程WinForm框架进行改造；<br />
开发的新功能包括：平衡计分卡模块（财务、客户、管理和培训四个方面的指标），项目看板，项目地图，项目报表以及其他模块的功能扩展等。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2008年8月 — 2009年3月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>OXPG虚拟物品B2C交易平台</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows, IIS</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, ASP.NET, SQL Server</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>担任该项目的项目主管，团队规模3人，主要职责如下：<br />
1.	与客户沟通，引导客户并对需求进行深入挖掘分析，确定设计方案；<br />
2.	制定开发和测试计划，控制项目进度；<br />
3.	搭建项目框架，编写DAL和BLL底层代码；<br />
4.	组织测试和验收上线。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>OXPG虚拟物品B2C交易平台是一个针对游戏玩家进行游戏币交易，代练升级定制，装备交易等的电子商务平台，OXPG OA则作为商家内部处理交易平台订单流程的办公自动化系统，使用基于Web Service的双向订单同步接口，实时监控新订单的生成和订单处理情况。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2006年6月 — 2008年8月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>企业虚拟工厂系统（VFS）</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows, IIS</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, ASP.NET, AJAX, Web Service, SQL Server, MySql</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>担任该项目的SE，主要负责：系统中订单管理、监控等模块的设计开发，以及与其他系统进行通讯挂接的Web Service接口的设计与开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>该项目是最大的板金机床生产厂商日本Amada公司的产品，高产品是一款适合于钣金行业工厂车间每日生产状况安排和监控的管理系统。生产线员工通过看板了解当前以及将要加工的信息，管理者通过看板实时了解生产进度，零件的完成情况及机器当前负荷等。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2005年5月 — 2006年3月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>上海通用汽车V6发动机生产线数据采集管理系统</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, SQL Server</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>需求分析，项目计划，总体设计，详细设计，软件开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>用于管理从V6发动机生产线上采集的数据，根据不同机位定制差异化的采集项。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2004年10月 — 2005年5月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>上海玻璃钢研究所天线罩数据采集系统及数据挖掘工具集</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows, IIS</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, ASP.NET, Matlab, SQL Server</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>需求分析，项目计划，总体设计，详细设计，软件开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>(Web)生产数据管理系统； <br />
 (WinForm) 数据挖掘工具主要实现数据挖掘的各种理论算法，对数据进行分析和知识挖掘，部分算法模块使用Matlab开发并与应用程序交互。
</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2004年7月 — 2004年10月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>上海地铁建筑工程公司OA系统</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows, IIS</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, ASP.NET, SQL Server</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>需求分析，详细设计，软件开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>本OA系统主要用于合同和项目管理的办公自动化。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>2004年1月 — 2004年10月</td><td style='font-weight:bold;background-color:#ededed;padding-left:10px;' colspan='3'>大连一汽柴油发动机生产线管理系统</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>软件环境</td><td style='padding-left:10px;' colspan='3'>Windows, IIS</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>开发工具</td><td style='padding-left:10px;' colspan='3'>C#, ASP.NET, Web Service, SQL Server</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>责任简述</td><td style='padding-left:10px;' colspan='3'>软件开发。</td>
</tr>
<tr>
<td style='font-weight:bold;background-color:#ededed;padding-left:10px;'>项目描述</td><td style='padding-left:10px;' colspan='3'>MIS系统（B/S架构，用于车间组织及生产数据管理、报表等）；<br />
ECU管理系统(B/S架构，用于电子控制单元的管理和ECU文件生成)；<br />
工位机实时监控；<br />
WINCC组态监控。</td>
</tr>
</table>
";

            mop.AttachmentList.Add(new Attachment(@"e:\M_Resume(包洋)_CN.doc"));
            mop.AttachmentList.Add(new Attachment(@"e:\M_Resume(包洋)_EN.doc"));
            List<string> toList = new List<string>();
            //toList.Add("testbao@gmail.com");
            //toList.Add("baoljyj@gmail.com");
            //toList.Add("baoyang@seiosoft.com");
            toList.Add("hr@xsunt.com.cn");//百舜信息技术 Web开发项目经理 漕溪北路375号中金国际广场C座21D(1号线徐家汇站4/5号口) http://search.51job.com/job/42311300,c.html
            toList.Add("shanghaihr@pugster.com"); //帕诗媞信息科技（上海）有限公司 项目经理 浦东南路1036号1703~1704室 http://search.51job.com/job/36100953,c.html
            for (int i = 0; i < toList.Count; i++)
            {
                mop.ToMail = toList[i];
                Console.WriteLine(toList[i]+" starting...");
                mop.SendMail();
                Console.WriteLine(toList[i] + " finished");
            }
        }
    }
}
